<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 实例化一个promise
const p1  = new Promise((resolve,reject)=>{
    //在进行异步代码操作时，可以包裹一个try catch 错误处理
    try{
       //包裹需要检测的代码
        // 定时器模拟异步代码
        console.log('开始获取');
        setTimeout(() => {
            // throw new Error('错误')
            console.log('获取成功');
            resolve('成功')
            // reject('错误')
        }, 1000);
        
    }catch(e){
        //处理错误信息
        reject(e.message)
        console.log(e.message);
    }
})
console.log('p1',p1);
    // .then默认返回成功的promise实例，值为retrun的值，如果跟promise则和peomise的状态和值保持一致
//    const p2 = p1.then(()=>{
//         console.log(2);
//         return 1
//     })

//     console.log('p2',p2);
    p1.then(()=>{
        console.log(1);
        throw new Error('错误')
    })
    // 如果promise实例失败，则穿透上面的then，进到catch 状态
   const p2 =  p1.catch(()=>{
        console.log(2);
        return 2
    })
    // 返回一个错误实例，规则和then一样
    console.log('p2',p2);
    // .then(()=>{
        
    // }) 
    // .catch(()=>{

    // })
    </script>
</body>
</html>